#include<iostream>
#include<queue>
using namespace std;
typedef long long LL;
LL n, m;
priority_queue<int,vector<int>,greater<int>> q1;
LL max(LL x, LL y)
{
	if (x > y)
	{
		return x;
	}
	else return y;
}
int main()
{
	cin >> n >> m;
	LL ret = 0;
	//进行多次操作
	while (m--)
	{
		q1.push(0);//注意得先往里面放一堆0
	}
	for(int i=1;i<=n;i++)
	{
		int x;
		cin >> x;
		int y = q1.top();q1.pop();
		int z = y + x;q1.push(z);
		ret = max(ret, z);
	}
	cout << ret << endl;
	return 0;
}
